#ifndef CPHYSICS_H
#define CPHYSICS_H

#include "Vector3D.h"

class cPhysics
{
	public:
		//Initialize information for the class
		cPhysics();
		~cPhysics();

		//Set the information for the objects mass
		void setMass(float mass);

		//Set the information for the speed of the object
		void setSpeed(float speed);

		//Retrieve the speed of the object
		float retrieveSpeed(); 

		//Computes the physics calculations for moving an
		//object on the screen
		Vector3D linearDisplacement(float dt);

		//Computes the physics calculations for moving an
		//object on the screen
		Vector3D angularDisplacement(float dt);

	protected:
		//Scalar Quantities
		float m_mass, m_inverseMass, m_centerOfMass;
		float m_speed;

		//Vector Quantities : Linear
		Vector3D m_linearPosition;
		Vector3D m_linearVelocity;
		Vector3D m_linearAcceleration;
		
		//Forces for linear motion
		Vector3D m_force;
		Vector3D m_gravity;
		Vector3D m_momentum;
		
		//Vector Quantities : Angular
		Vector3D m_angularPosition;
		Vector3D m_angularVelocity;
		Vector3D m_angularAcceleration;
		Vector3D m_torque;

		//Coefficients of the dynamics movement
		struct { float friction, restitution, drag; } coefficient; 
};
#endif